﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using FrbaCommerce.Registro_de_Usuario;

namespace FrbaCommerce.Abm_Empresa
{
    public partial class AbmEmpresa : Form
    {

        Empresa empresa;
        Usuario user;
        RegistrarUsuario parent;

        public AbmEmpresa(Empresa empresa)
        {
            InitializeComponent();
            this.empresa = empresa;
            this.user = new Usuario();
            this.user.userName = "";
            if (empresa.id!=0)
            {
                this.CargarEmpresa();                
            }
        }

        public AbmEmpresa(Empresa empresa, RegistrarUsuario form) 
        {
            InitializeComponent();
            this.empresa = empresa;
            this.parent = form;
            this.user = form.getUsuario();
            if (empresa.id != 0)
            {
                this.CargarEmpresa();
            }
        }

        public AbmEmpresa (Empresa empresa, Usuario usuario)
        {
            InitializeComponent();
            this.empresa = empresa;
            this.user = usuario;
            if (this.empresa.id != 0)
            {
                this.CargarEmpresa();
            }
                
        }     

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            if (verificacionDatos())
            {
                this.LlenarEmpresa();
                if (Cargar_Tel_Y_Direccion(this.empresa))
                {
                    //this.LlenarEmpresa();
                    if (this.empresa.id == 0)
                    {
                        /*GUARDO EL USUARIO x defecto*/
                        if (this.user.userName.Length == 0)
                        {
                            this.user.userName = empresa.cuit.ToString();
                            this.user.guardarUsuarioEmpresaDefault();
                        }

                        /*HAY USUARIO POR REGISTRAR*/
                        else
                        {
                            this.user.guardar();
                            this.user.updateUltimoLogin();
                        }

                        this.empresa.habilitado = true;
                        this.empresa.id_user = this.user.Id;
                        empresa.Guardar(this.empresa);
                        MessageBox.Show("Los datos han sido ingresados al sistema.", "Confirmacion", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        this.Close();
                    }
                    else
                    {
                        this.empresa.Modificar(this.empresa);
                        MessageBox.Show("Los datos han sido ingresados al sistema.", "Confirmacion", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        this.Close();
                    }
                }
            } 
        }

        private bool verificacionDatos()
        {
            string mensaje = ValidarCamposObligatorios();
            DateTime fecha = new DateTime();
            FuncionesComunes funciones = new FuncionesComunes();
            if (mensaje.Length != 0)
            {
                MessageBox.Show("El/los siguientes campos son obligatorios.\n" + mensaje, "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            else if (txtMail.Text.Length != 0 && !funciones.validacionMail(txtMail.Text))
            {
                MessageBox.Show("El email no es válido.", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            else if (!funciones.validacionFecha(dateTimePicker1.Value.ToString(), out fecha))
            {
                MessageBox.Show("La fecha es inválida.", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            else if (this.empresa.id != 0)
            {                
                if (txtCUIT.Text == this.empresa.cuit)
                {
                   return true;
                }
                else
                { 
                    if (!empresa.VerificarCuit(txtCUIT.Text))
                    {
                        MessageBox.Show("El CUIT ingresado ya esta en el sistema.", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        return false;
                    }
                    else
                        return true;
                }
            }
            else
            {
               
                if (!empresa.VerificarCuit(txtCUIT.Text))
                {
                    MessageBox.Show("El CUIT ingresado ya esta en el sistema.", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return false;
                }
                else
                    return true; 
            }
        }



        private bool Cargar_Tel_Y_Direccion(Empresa empresa)
        {
            /*Agregar el tel*/
            if (this.empresa.tel.id ==  null || this.empresa.tel.id == "")
            {
                if (!this.empresa.tel.Guardar(this.empresa.tel))
                {
                    MessageBox.Show("El telefono ingresado ya esta en el sistema.", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return false;
                }
            }
            else
            {
                if (String.Compare(txtTelefono.Text, this.empresa.tel.numero) != 0)
                {
                    if (!empresa.tel.VerificarTelefono(this.empresa.tel.numero))
                    {
                        MessageBox.Show("El telefono ingresado ya esta en el sistema.", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        return false;

                    }
                    else
                    {
                        this.empresa.tel.Modificar(this.empresa.tel);
                        return true;
                    }
                }
                else
                {
                    this.empresa.tel.Modificar(this.empresa.tel);
                    return true;
                }

            }
            if (this.empresa.dir.id == 0)
            {
                this.empresa.dir.Guardar(this.empresa.dir);
                return true;
            }
            else
            {
                this.empresa.dir.Modificar(this.empresa.dir);
                return true;
            }

        }

        private void CargarEmpresa()
        {
            txtRazonSocial.Text = this.empresa.razon_social;
            txtContacto.Text = this.empresa.nombreContacto;
            txtCUIT.Text = this.empresa.cuit;            
            txtMail.Text = this.empresa.mail;
            //txtFechaDeNacimiento.Text = this.empresa.FechaNacimiento.ToString();
            //Dirección
            txtDireccion.Text = this.empresa.dir.domicilio;
            txtNro.Text = this.empresa.dir.nro.ToString();
            txtPiso.Text = this.empresa.dir.piso.ToString();
            txtDepto.Text = this.empresa.dir.depto;
            txtCodPostal.Text = this.empresa.dir.cp;
            txtLocalidad.Text = this.empresa.dir.localidad;
            txtCiudad.Text = this.empresa.dir.ciudad;
            //Telefono
            txtPais.Text = this.empresa.tel.cod_pais.ToString();
            txtArea.Text = this.empresa.tel.cod_area.ToString();
            txtTelefono.Text = this.empresa.tel.numero.ToString();
            dateTimePicker1.Value = this.empresa.fechaCreacion;
        }

        private void LlenarEmpresa()
        {
            this.empresa.razon_social = txtRazonSocial.Text;
            this.empresa.cuit = txtCUIT.Text;
            this.empresa.nombreContacto = txtContacto.Text;            
            this.empresa.mail = txtMail.Text;
            //Direccion
            if (this.empresa.id == 0)
            {
                this.empresa.dir = new Direccion();
            }
            this.empresa.dir.domicilio = txtDireccion.Text;
            this.empresa.dir.nro = Convert.ToInt32(txtNro.Text);
            this.empresa.dir.piso = Convert.ToInt32(txtPiso.Text);
            this.empresa.dir.depto = txtDepto.Text;
            this.empresa.dir.cp = txtCodPostal.Text;
            this.empresa.dir.localidad = txtLocalidad.Text;
            this.empresa.dir.ciudad = txtCiudad.Text;
            //Telefono
            if (this.empresa.id == 0)
            {
                this.empresa.tel = new Telefono();
            }
            this.empresa.tel.cod_pais = txtPais.Text;
            this.empresa.tel.cod_area = txtArea.Text;
            this.empresa.tel.numero = txtTelefono.Text;
            this.empresa.fechaCreacion = dateTimePicker1.Value;
            
        }

        private void LimpiarCampos()
        {            
            txtContacto.Text = String.Empty;
            txtCUIT.Text = String.Empty;
            txtRazonSocial.Text = String.Empty;
            txtMail.Text = String.Empty;
            //txtFechaDeNacimiento.Text = String.Empty;
            txtContacto.BackColor = Color.White;
            txtCUIT.BackColor = Color.White;
            txtRazonSocial.BackColor = Color.White;            
            txtMail.BackColor = Color.White;            
            //Dirección
            txtDireccion.Text = String.Empty;
            txtNro.Text = String.Empty;
            txtPiso.Text = String.Empty;
            txtDepto.Text = String.Empty;
            txtCodPostal.Text = String.Empty;
            txtLocalidad.Text = String.Empty;
            txtCiudad.Text = String.Empty;
            txtDireccion.BackColor = Color.White;
            txtNro.BackColor = Color.White;
            txtPiso.BackColor = Color.White;
            txtDepto.BackColor = Color.White;
            txtCodPostal.BackColor = Color.White;
            txtLocalidad.BackColor = Color.White;
            txtCiudad.BackColor = Color.White;
            //Telefono
            txtPais.Text = String.Empty;
            txtArea.Text = String.Empty;
            txtTelefono.Text = String.Empty;
            txtPais.BackColor = Color.White;
            txtArea.BackColor = Color.White;
            txtTelefono.BackColor = Color.White;
        }

        private string ValidarCamposObligatorios()
        {
            FuncionesComunes funciones = new FuncionesComunes();
            string mensaje, mensajeAmostrar = "";
            mensaje = funciones.verificarCampoVacio(txtContacto, "Nombre de Contacto");
            txtContacto = funciones.colorearTextBox(txtContacto, mensaje);
            mensajeAmostrar += mensaje;

            mensaje = funciones.verificarCampoVacio(txtCUIT, "CUIT");
            txtCUIT = funciones.colorearTextBox(txtCUIT, mensaje);
            mensajeAmostrar += mensaje;

            mensaje = funciones.verificarCampoVacio(txtRazonSocial, "Razón Social");
            txtRazonSocial = funciones.colorearTextBox(txtRazonSocial, mensaje);
            mensajeAmostrar += mensaje;

            mensaje = funciones.verificarCampoVacio(txtMail, "Mail");
            txtRazonSocial = funciones.colorearTextBox(txtMail, mensaje);
            mensajeAmostrar += mensaje;

            mensaje = funciones.verificarCampoVacio(txtTelefono, "Telefono");
            txtTelefono = funciones.colorearTextBox(txtTelefono, mensaje);
            mensajeAmostrar += mensaje;

            mensaje = funciones.verificarCampoVacio(txtArea, "Cod. Area");
            txtArea = funciones.colorearTextBox(txtArea, mensaje);
            mensajeAmostrar += mensaje;

            mensaje = funciones.verificarCampoVacio(txtPais, "Cod. Pais");
            txtPais = funciones.colorearTextBox(txtPais, mensaje);
            mensajeAmostrar += mensaje;

            mensaje = funciones.verificarCampoVacio(txtDireccion, "Calle");
            txtDireccion = funciones.colorearTextBox(txtDireccion, mensaje);
            mensajeAmostrar += mensaje;

            mensaje = funciones.verificarCampoVacio(txtNro, "Nro");
            txtNro = funciones.colorearTextBox(txtNro, mensaje);
            mensajeAmostrar += mensaje;

            mensaje = funciones.verificarCampoVacio(txtDepto, "Dpto");
            txtDepto = funciones.colorearTextBox(txtDepto, mensaje);
            mensajeAmostrar += mensaje;

            mensaje = funciones.verificarCampoVacio(txtPiso, "Piso");
            txtPiso = funciones.colorearTextBox(txtPiso, mensaje);
            mensajeAmostrar += mensaje;

            mensaje = funciones.verificarCampoVacio(txtCodPostal, "Codigo Postal");
            txtCodPostal = funciones.colorearTextBox(txtCodPostal, mensaje);
            mensajeAmostrar += mensaje;

            return mensajeAmostrar;
        }

        private void lblLimpiarCampos_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            LimpiarCampos();
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void txtDireccion_KeyPress(object sender, KeyPressEventArgs e)
        {
            FuncionesComunes f = new FuncionesComunes();
            f.keyPressAlfanumerico(e);
        }

        private void txtNro_KeyPress(object sender, KeyPressEventArgs e)
        {
            FuncionesComunes f = new FuncionesComunes();
            f.keyPressNumeros(e);
        }

        private void txtPiso_KeyPress(object sender, KeyPressEventArgs e)
        {
            FuncionesComunes f = new FuncionesComunes();
            f.keyPressNumeros(e);
        }

        private void txtCodPostal_KeyPress(object sender, KeyPressEventArgs e)
        {
            FuncionesComunes f = new FuncionesComunes();
            f.keyPressAlfanumerico(e);
        }

        private void txtDepto_KeyPress(object sender, KeyPressEventArgs e)
        {
            FuncionesComunes f = new FuncionesComunes();
            f.keyPressAlfanumerico(e);
        }

        private void txtLocalidad_KeyPress(object sender, KeyPressEventArgs e)
        {
            FuncionesComunes f = new FuncionesComunes();
            f.keyPressAlfanumerico(e);
        }

        private void txtCiudad_KeyPress(object sender, KeyPressEventArgs e)
        {
            FuncionesComunes f = new FuncionesComunes();
            f.keyPressAlfanumerico(e);
        }

        private void txtPais_KeyPress(object sender, KeyPressEventArgs e)
        {
            FuncionesComunes f = new FuncionesComunes();
            f.keyPressNumeros(e);
        }

        private void txtArea_KeyPress(object sender, KeyPressEventArgs e)
        {
            FuncionesComunes f = new FuncionesComunes();
            f.keyPressNumeros(e);
        }

        private void txtTelefono_KeyPress(object sender, KeyPressEventArgs e)
        {
            FuncionesComunes f = new FuncionesComunes();
            f.keyPressNumeros(e);
        }

        private void txtRazonSocial_KeyPress(object sender, KeyPressEventArgs e)
        {
            FuncionesComunes f = new FuncionesComunes();
            f.keyPressAlfanumerico(e);
        }      

    }
}


